Update an article.
  • 12 May 2026
  • 14 Minutes to read
  • Contributors
  • Dark
    Light

Update an article.

  • Dark
    Light

Article summary

Patch
/v3/projects/{project_id}/articles/{article_id}

Performs a partial update on the article. Only fields included in the request body are modified; omitted fields remain unchanged. When auto_fork is true and the target version is published, a new draft version is automatically created and the update is applied to the draft. If auto_fork is false (default) and you attempt to update content on a published version, a 422 error is returned.

Security
OAuth

All V3 endpoints require a Bearer token. Generate tokens in the Document360 portal under Settings > API Tokens. Tokens are project-scoped, require the customerApi scope, and do not expire by default. Tokens can be revoked at any time from the portal. Include the token in every request: Authorization: Bearer <your-token>. Alternatively, use the Authorize button below to sign in via OAuth2 Authorization Code flow with PKCE.

FlowAuthorization Code
Authorization URLhttps://identity.document360.net/connect/authorize
Token URLhttps://identity.document360.net/connect/token
Scopes:
customerApiDocument360 Customer API
Path parameters
project_id
string (uuid) Required

The unique identifier of the project. Retrieve project IDs from GET /v3/projects.

Example9a3b4c5d-6e7f-8a9b-0c1d-2e3f4a5b6c7d
article_id
string (uuid) Required

The unique identifier of the article. Retrieve article IDs from GET /v3/projects/{project_id}/articles.

Example9a3b4c5d-6e7f-8a9b-0c1d-2e3f4a5b6c7d
Query parameters
lang_code
string

ISO 639-1 language code (e.g., en, fr). Defaults to the project's primary language if omitted.

Pattern^[a-z]{2}(-[A-Z]{2})?$
Exampleen
Body parameters

Updated article data.

Update title and content with auto-fork

Updates the article title and content. When auto_fork is true and the target version is published, a new draft version is created automatically.

{
  "title": "Getting Started with Single Sign-On (Updated)",
  "content": "# Introduction\nThis updated guide walks you through configuring SSO for your organization.",
  "category_id": null,
  "hidden": null,
  "version_number": null,
  "translation_option": null,
  "source": null,
  "order": null,
  "auto_fork": true
}
Move article to a different category

Moves the article to a new category without changing its content.

{
  "title": null,
  "content": null,
  "category_id": "f4a5b6c7-d8e9-0a1b-2c3d-4e5f6a7b8c9d",
  "hidden": null,
  "version_number": null,
  "translation_option": null,
  "source": null,
  "order": 3,
  "auto_fork": null
}
Update a specific version

Targets a specific draft version for the update. Use version_number to specify which version to update.

{
  "title": "Getting Started with SSO - v3 Draft",
  "content": "# Introduction\nDraft version with additional sections.",
  "category_id": null,
  "hidden": null,
  "version_number": 3,
  "translation_option": null,
  "source": null,
  "order": null,
  "auto_fork": null
}
object

Request to update an existing article.

title
string | null

The updated title of the article.

ExampleGetting Started with Single Sign-On (Updated)
content
string | null

The updated body content of the article.

Example# Introduction\nThis updated guide walks you through configuring SSO.
category_id
string | null

The identifier of the category to move the article to. Retrieve category IDs from GET /v3/projects/{projectId}/categories.

Examplef4a5b6c7-d8e9-0a1b-2c3d-4e5f6a7b8c9d
hidden
boolean | null

Whether the article should be hidden from readers.

Examplefalse
version_number
integer (int32) | null

The version number to apply the update to. Defaults to the latest version if omitted. When auto_fork is true and this version is published, the update is applied to the newly created draft version, not the original published version.

Example3
translation_option
string | null

The updated translation status of the article. Possible values: 0 = None, 1 = NeedTranslation, 2 = Translated, 3 = InProgress.

Valid values[ "none", "needTranslation", "translated", "inProgress" ]
source
string | null

The source of the update. Common values: API, import, portal. When omitted, defaults to API for Customer API requests.

ExampleAPI
order
integer (int32) | null

The updated display order within the category.

Example5
auto_fork
boolean | null

When true and the target version is published, a new draft version is automatically forked and the update (including content and title) is applied to the new draft. When the target version is already a draft, no fork occurs and the update is applied directly. When false (default), updating content on a published version returns a 422 error.

Exampletrue
Responses
200

Article updated successfully.

Article updated successfully

The article has been updated. If auto_fork was true and the version was published, the response shows the newly created draft version.

{
  "data": {
    "id": "9a3b4c5d-6e7f-8a9b-0c1d-2e3f4a5b6c7d",
    "title": "Getting Started with Single Sign-On (Updated)",
    "content": "# Introduction\nThis updated guide walks you through configuring SSO for your organization.",
    "html_content": null,
    "category_id": "f4a5b6c7-d8e9-0a1b-2c3d-4e5f6a7b8c9d",
    "project_version_id": "1c2d3e4f-5a6b-7c8d-9e0f-a1b2c3d4e5f6",
    "version_number": 3,
    "public_version": 2,
    "latest_version": 3,
    "enable_rtl": false,
    "hidden": false,
    "status": 0,
    "order": 0,
    "created_by": "a1b2c3d4-e5f6-7a8b-9c0d-1e2f3a4b5c6d",
    "authors": [],
    "created_at": "2025-06-01T09:00:00Z",
    "modified_at": "2025-08-16T10:00:00Z",
    "modified_by": "a1b2c3d4-e5f6-7a8b-9c0d-1e2f3a4b5c6d",
    "slug": "getting-started-with-single-sign-on",
    "is_fallback_content": false,
    "description": null,
    "category_type": null,
    "content_type": 0,
    "is_shared_article": false,
    "translation_option": "none",
    "url": null,
    "current_workflow_status_id": null,
    "lang_code": "en",
    "available_languages": null,
    "settings": null
  },
  "success": true,
  "request_id": "req_abc123def456",
  "errors": null,
  "warnings": null
}
Expand All
object

Generic API response wrapper containing typed data.

data
object

Response data payload.

id
string (uuid) | null

The unique identifier of the article.

Example9a3b4c5d-6e7f-8a9b-0c1d-2e3f4a5b6c7d
title
string | null

The title of the article.

ExampleGetting Started with Single Sign-On
content
string | null

The raw content of the article in its source format.

Example# Introduction\nThis guide walks you through configuring SSO for your organization.
html_content
string | null

The rendered HTML content of the article.

Example<h1>Introduction</h1><p>This guide walks you through configuring SSO.</p>
category_id
string | null

The identifier of the category this article belongs to. Use this value with GET /v3/projects/{projectId}/categories/{categoryId} to retrieve category details.

Examplef4a5b6c7-d8e9-0a1b-2c3d-4e5f6a7b8c9d
project_version_id
string | null

The project version this article belongs to. Corresponds to a version from GET /v3/projects/{projectId}/project-versions.

Example1c2d3e4f-5a6b-7c8d-9e0f-a1b2c3d4e5f6
version_number
integer (int32)

The current version number of the article.

Example3
public_version
integer (int32) | null

The latest published version number, or null if the article has never been published.

Example2
latest_version
integer (int32)

The latest version number including drafts.

Example3
enable_rtl
boolean

Whether right-to-left text direction is enabled.

Examplefalse
hidden
boolean

Whether the article is hidden from readers.

Examplefalse
status
string

The publication status of the article. Possible values: 0 = Draft, 3 = Published.

Valid values[ "draft", "published", "forked", "unpublished" ]
order
integer (int32)

The display order of the article within its category.

Example5
created_by
string | null

The user ID of the original article creator. For full author details including name and avatar, see the authors array. Corresponds to a user from GET /v3/projects/{projectId}/users.

Examplea1b2c3d4-e5f6-7a8b-9c0d-1e2f3a4b5c6d
authors
Array of object (AuthorResponse) | null

The list of contributors to this article, including the original creator and any subsequent editors.

object

Author information for an article.

id
string (uuid) | null

The unique identifier of the author.

Examplea1b2c3d4-e5f6-7a8b-9c0d-1e2f3a4b5c6d
first_name
string | null

The first name of the author.

ExampleJane
last_name
string | null

The last name of the author.

ExampleDoe
email
string (email) | null

The email address of the author.

profile_logo_url
string | null

The URL of the author's profile image.

Examplehttps://cdn.example.com/avatars/jane-doe.png
created_at
string (date-time)

The date and time the article was created.

Example2025-06-01T09:00:00Z
modified_at
string (date-time)

The date and time the article was last modified.

Example2025-08-15T14:30:00Z
modified_by
string | null

The user ID of who last modified this article. Corresponds to a user from GET /v3/projects/{projectId}/users.

Exampleb2c3d4e5-f6a7-8b9c-0d1e-2f3a4b5c6d7e
slug
string | null

The URL slug for the article.

Examplegetting-started-with-single-sign-on
is_fallback_content
boolean

Whether the content is a fallback from the default language.

Examplefalse
description
string | null

A brief description of the article.

ExampleLearn how to configure single sign-on authentication for your knowledge base.
category_type
string | null

The type of category this article belongs to. Possible values: 0 = Folder, 1 = Page, 2 = Index.

Valid values[ "folder", "page", "index" ]
content_type
string | null

The editor content type of the article. Possible values: 0 = Markdown, 1 = Wysiwyg (rich text), 2 = Block.

Valid values[ "markdown", "wysiwyg", "block" ]
is_shared_article
boolean

Whether the article is shared across multiple projects.

Examplefalse
translation_option
string

The translation status of the article. Possible values: 0 = None, 1 = NeedTranslation, 2 = Translated, 3 = InProgress.

Valid values[ "none", "needTranslation", "translated", "inProgress" ]
url
string (uri) | null

The full URL of the article.

Examplehttps://docs.example.com/en/articles/getting-started-with-single-sign-on
current_workflow_status_id
string | null

The current workflow status identifier. Retrieve available statuses from GET /v3/projects/{projectId}/workflow-statuses.

Exampleb7e2a1d4-3f56-4c89-9d0e-1a2b3c4d5e6f
lang_code
string | null

The language code of this article version.

Exampleen
available_languages
Array of object (AvailableLanguage) | null

The list of languages this article is available in.

object

Represents a language in which an article is available.

lang_code
string | null

The language code (e.g., "en", "fr").

Examplefr
url
string (uri) | null

The URL of the article in this language.

Examplehttps://docs.example.com/fr/articles/getting-started-with-single-sign-on
translation_status
string

The translation status for this language. Possible values: 0 = None, 1 = NeedTranslation, 2 = Translated, 3 = InProgress.

Valid values[ "none", "needTranslation", "translated", "inProgress" ]
settings
object | null

A subset of article settings (SEO title, description, external search exclusion). For full settings including tags, related articles, and display options, use GET /v3/projects/{projectId}/articles/{articleId}/settings.

seo_title
string | null

The custom SEO title for search engines.

ExampleSSO Setup Guide - Product Documentation
description
string | null

The meta description for search engines.

ExampleStep-by-step instructions for configuring single sign-on with SAML or OIDC providers.
exclude_from_external_search
boolean

Whether the article is excluded from external search engine indexing.

Examplefalse
success
boolean

Whether the API request was successful.

request_id
string

Unique identifier for request tracing and correlation.

Min length1
errors
Array of object (ApiError) | null

List of errors if the request failed.

object

Represents an error returned by the API.

code
string

Machine-readable error code (e.g. VALIDATION_ERROR, RESOURCE_NOT_FOUND).

Min length1
message
string

Human-readable error message.

Min length1
field
string | null

The request field that caused the error, if applicable.

details
string | null

Additional context about the error.

warnings
Array of object (ApiWarning) | null

List of non-fatal warnings from the request.

object

Represents a non-fatal warning from the API.

code
string

Machine-readable warning code.

Min length1
message
string

Human-readable warning message.

Min length1
400

The request body is malformed or contains invalid JSON.

Expand All
object

RFC 7807 Problem Details response for V3 API errors. Content-Type: application/problem+json

type
string

URI reference identifying the error type (links to documentation).

Min length1
title
string

Short human-readable summary of the error type.

Min length1
status
integer (int32)

HTTP status code.

detail
string | null

Human-readable explanation specific to this occurrence.

instance
string | null

URI of the request that generated the error.

trace_id
string | null

Request trace identifier for correlation.

errors
Array of object (ApiError) | null

Structured list of specific errors (extension field).

object

Represents an error returned by the API.

code
string

Machine-readable error code (e.g. VALIDATION_ERROR, RESOURCE_NOT_FOUND).

Min length1
message
string

Human-readable error message.

Min length1
field
string | null

The request field that caused the error, if applicable.

details
string | null

Additional context about the error.

warnings
Array of object (ApiWarning) | null

Non-fatal warnings (extension field).

object

Represents a non-fatal warning from the API.

code
string

Machine-readable warning code.

Min length1
message
string

Human-readable warning message.

Min length1
401

Authentication token is missing or invalid.

Headers
WWW-Authenticate
string
Indicates the authentication scheme required. Returns `Bearer` with optional `error` and `error_description` parameters per RFC 6750.
Missing or invalid token

Authentication token is missing or invalid.

{
  "type": "https://developer.document360.com/errors/unauthorized",
  "title": "Unauthorized.",
  "status": 401,
  "detail": "The authentication token is missing or has expired.",
  "instance": null,
  "trace_id": "req_abc123def456",
  "errors": [
    {
      "code": "UNAUTHORIZED",
      "message": "Bearer token is missing or invalid.",
      "field": null,
      "details": null
    }
  ],
  "warnings": null
}
Expand All
object

RFC 7807 Problem Details response for V3 API errors. Content-Type: application/problem+json

type
string

URI reference identifying the error type (links to documentation).

Min length1
title
string

Short human-readable summary of the error type.

Min length1
status
integer (int32)

HTTP status code.

detail
string | null

Human-readable explanation specific to this occurrence.

instance
string | null

URI of the request that generated the error.

trace_id
string | null

Request trace identifier for correlation.

errors
Array of object (ApiError) | null

Structured list of specific errors (extension field).

object

Represents an error returned by the API.

code
string

Machine-readable error code (e.g. VALIDATION_ERROR, RESOURCE_NOT_FOUND).

Min length1
message
string

Human-readable error message.

Min length1
field
string | null

The request field that caused the error, if applicable.

details
string | null

Additional context about the error.

warnings
Array of object (ApiWarning) | null

Non-fatal warnings (extension field).

object

Represents a non-fatal warning from the API.

code
string

Machine-readable warning code.

Min length1
message
string

Human-readable warning message.

Min length1
404

Article not found.

Resource not found

The requested resource was not found.

{
  "type": "https://developer.document360.com/errors/not-found",
  "title": "Not Found.",
  "status": 404,
  "detail": "The requested resource does not exist or has been deleted.",
  "instance": null,
  "trace_id": "req_abc123def456",
  "errors": [
    {
      "code": "RESOURCE_NOT_FOUND",
      "message": "The requested resource was not found.",
      "field": null,
      "details": null
    }
  ],
  "warnings": null
}
Expand All
object

RFC 7807 Problem Details response for V3 API errors. Content-Type: application/problem+json

type
string

URI reference identifying the error type (links to documentation).

Min length1
title
string

Short human-readable summary of the error type.

Min length1
status
integer (int32)

HTTP status code.

detail
string | null

Human-readable explanation specific to this occurrence.

instance
string | null

URI of the request that generated the error.

trace_id
string | null

Request trace identifier for correlation.

errors
Array of object (ApiError) | null

Structured list of specific errors (extension field).

object

Represents an error returned by the API.

code
string

Machine-readable error code (e.g. VALIDATION_ERROR, RESOURCE_NOT_FOUND).

Min length1
message
string

Human-readable error message.

Min length1
field
string | null

The request field that caused the error, if applicable.

details
string | null

Additional context about the error.

warnings
Array of object (ApiWarning) | null

Non-fatal warnings (extension field).

object

Represents a non-fatal warning from the API.

code
string

Machine-readable warning code.

Min length1
message
string

Human-readable warning message.

Min length1
422

Validation failed.

Validation failed

The request body contains invalid data.

{
  "type": "https://developer.document360.com/errors/validation-error",
  "title": "Unprocessable Entity.",
  "status": 422,
  "detail": "One or more fields failed validation.",
  "instance": null,
  "trace_id": "req_abc123def456",
  "errors": [
    {
      "code": "VALIDATION_ERROR",
      "message": "This field is required.",
      "field": "title",
      "details": null
    }
  ],
  "warnings": null
}
Expand All
object

RFC 7807 Problem Details response for V3 API errors. Content-Type: application/problem+json

type
string

URI reference identifying the error type (links to documentation).

Min length1
title
string

Short human-readable summary of the error type.

Min length1
status
integer (int32)

HTTP status code.

detail
string | null

Human-readable explanation specific to this occurrence.

instance
string | null

URI of the request that generated the error.

trace_id
string | null

Request trace identifier for correlation.

errors
Array of object (ApiError) | null

Structured list of specific errors (extension field).

object

Represents an error returned by the API.

code
string

Machine-readable error code (e.g. VALIDATION_ERROR, RESOURCE_NOT_FOUND).

Min length1
message
string

Human-readable error message.

Min length1
field
string | null

The request field that caused the error, if applicable.

details
string | null

Additional context about the error.

warnings
Array of object (ApiWarning) | null

Non-fatal warnings (extension field).

object

Represents a non-fatal warning from the API.

code
string

Machine-readable warning code.

Min length1
message
string

Human-readable warning message.

Min length1
429

Rate limit exceeded. Retry after the duration specified in the Retry-After header.

Headers
Retry-After
integer
Number of seconds to wait before retrying the request. Use exponential backoff with jitter for optimal retry behavior.
X-RateLimit-Limit
integer
The maximum number of requests allowed in the current time window. Limits are applied per API token per project.
X-RateLimit-Remaining
integer
The number of requests remaining in the current time window. When this reaches 0, subsequent requests will receive a 429 response.
X-RateLimit-Reset
integer
The UTC epoch timestamp (in seconds) when the current rate limit window resets.
Rate limit exceeded

Rate limit exceeded.

{
  "type": "https://developer.document360.com/errors/too-many-requests",
  "title": "Too Many Requests.",
  "status": 429,
  "detail": "Rate limit exceeded. Retry after the duration specified in the Retry-After header.",
  "instance": null,
  "trace_id": "req_abc123def456",
  "errors": [
    {
      "code": "TOO_MANY_REQUESTS",
      "message": "Rate limit exceeded. Retry after the duration specified in the Retry-After header.",
      "field": null,
      "details": null
    }
  ],
  "warnings": null
}
Expand All
object

RFC 7807 Problem Details response for V3 API errors. Content-Type: application/problem+json

type
string

URI reference identifying the error type (links to documentation).

Min length1
title
string

Short human-readable summary of the error type.

Min length1
status
integer (int32)

HTTP status code.

detail
string | null

Human-readable explanation specific to this occurrence.

instance
string | null

URI of the request that generated the error.

trace_id
string | null

Request trace identifier for correlation.

errors
Array of object (ApiError) | null

Structured list of specific errors (extension field).

object

Represents an error returned by the API.

code
string

Machine-readable error code (e.g. VALIDATION_ERROR, RESOURCE_NOT_FOUND).

Min length1
message
string

Human-readable error message.

Min length1
field
string | null

The request field that caused the error, if applicable.

details
string | null

Additional context about the error.

warnings
Array of object (ApiWarning) | null

Non-fatal warnings (extension field).

object

Represents a non-fatal warning from the API.

code
string

Machine-readable warning code.

Min length1
message
string

Human-readable warning message.

Min length1
500

An unexpected server error occurred.

Unexpected server error

Unexpected server error.

{
  "type": "https://developer.document360.com/errors/internal-error",
  "title": "Internal Server Error.",
  "status": 500,
  "detail": "An unexpected error occurred. Please try again or contact support.",
  "instance": null,
  "trace_id": "req_abc123def456",
  "errors": [
    {
      "code": "INTERNAL_SERVER_ERROR",
      "message": "An unexpected error occurred.",
      "field": null,
      "details": null
    }
  ],
  "warnings": null
}
Expand All
object

RFC 7807 Problem Details response for V3 API errors. Content-Type: application/problem+json

type
string

URI reference identifying the error type (links to documentation).

Min length1
title
string

Short human-readable summary of the error type.

Min length1
status
integer (int32)

HTTP status code.

detail
string | null

Human-readable explanation specific to this occurrence.

instance
string | null

URI of the request that generated the error.

trace_id
string | null

Request trace identifier for correlation.

errors
Array of object (ApiError) | null

Structured list of specific errors (extension field).

object

Represents an error returned by the API.

code
string

Machine-readable error code (e.g. VALIDATION_ERROR, RESOURCE_NOT_FOUND).

Min length1
message
string

Human-readable error message.

Min length1
field
string | null

The request field that caused the error, if applicable.

details
string | null

Additional context about the error.

warnings
Array of object (ApiWarning) | null

Non-fatal warnings (extension field).

object

Represents a non-fatal warning from the API.

code
string

Machine-readable warning code.

Min length1
message
string

Human-readable warning message.

Min length1

Was this article helpful?